//package com.rabbiter.oes.controller;
//
//import com.rabbiter.oes.entity.Admin;
//import com.rabbiter.oes.entity.ApiResult;
//import com.rabbiter.oes.serviceimpl.AdminServiceImpl;
//import com.rabbiter.oes.util.ApiResultHandler;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//
//@RestController
//public class AdminController {
//
//    private AdminServiceImpl adminService;
//    @Autowired
//    public AdminController(AdminServiceImpl adminService){
//        this.adminService = adminService;
//    }
//
//    @GetMapping("/admins")
//    public ApiResult findAll(){
//        System.out.println("查询全部");
//        return ApiResultHandler.success(adminService.findAll());
//    }
//
//    @GetMapping("/admin/{adminId}")
//    public ApiResult findById(@PathVariable("adminId") Integer adminId){
//        System.out.println("根据ID查找");
//        return ApiResultHandler.success(adminService.findById(adminId));
//    }
//
//    @DeleteMapping("/admin/{adminId}")
//    public ApiResult deleteById(@PathVariable("adminId") Integer adminId){
//        adminService.deleteById(adminId);
//        return ApiResultHandler.success();
//    }
//
//    @PutMapping("/admin/{adminId}")
//    public ApiResult update(@PathVariable("adminId") Integer adminId, Admin admin){
//        return ApiResultHandler.success(adminService.update(admin));
//    }
//
//    @PostMapping("/admin")
//    public ApiResult add(Admin admin){
//        return ApiResultHandler.success(adminService.add(admin));
//    }
//
//    @GetMapping("/admin/resetPsw/{adminId}/{oldPsw}/{newPsw}")
//    public ApiResult resetPsw(@PathVariable("adminId") Integer adminId, @PathVariable("newPsw") String newPsw, @PathVariable("oldPsw") String oldPsw) {
//        return ApiResultHandler.success(adminService.resetPsw(adminId, newPsw, oldPsw));
//    }
//}

package com.rabbiter.oes.controller;

import com.rabbiter.oes.entity.Admin;
import com.rabbiter.oes.entity.ApiResult;
import com.rabbiter.oes.serviceimpl.AdminServiceImpl;
import com.rabbiter.oes.util.ApiResultHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 管理员控制器，处理管理员相关请求
 */
@RestController
public class AdminController {

    private AdminServiceImpl adminService;

    /**
     * 构造函数注入AdminServiceImpl服务实现
     * @param adminService 管理员服务实现类
     */
    @Autowired
    public AdminController(AdminServiceImpl adminService){
        this.adminService = adminService;
    }

    /**
     * 获取所有管理员信息
     * @return 包含管理员列表的ApiResult对象
     */
    @GetMapping("/admins")
    public ApiResult findAll(){
        System.out.println("查询全部");
        return ApiResultHandler.success(adminService.findAll());
    }

    /**
     * 根据管理员ID查询管理员信息
     * @param adminId 管理员唯一标识符
     * @return 包含管理员详情的ApiResult对象
     */
    @GetMapping("/admin/{adminId}")
    public ApiResult findById(@PathVariable("adminId") Integer adminId){
        System.out.println("根据ID查找");
        return ApiResultHandler.success(adminService.findById(adminId));
    }

    /**
     * 根据管理员ID删除管理员
     * @param adminId 管理员唯一标识符
     * @return 操作结果的ApiResult对象
     */
    @DeleteMapping("/admin/{adminId}")
    public ApiResult deleteById(@PathVariable("adminId") Integer adminId){
        adminService.deleteById(adminId);
        return ApiResultHandler.success();
    }

    /**
     * 更新管理员信息
     * @param adminId 管理员唯一标识符
     * @param admin 包含更新信息的管理员对象
     * @return 更新后的管理员信息ApiResult对象
     */
    @PutMapping("/admin/{adminId}")
    public ApiResult update(@PathVariable("adminId") Integer adminId, Admin admin){
        return ApiResultHandler.success(adminService.update(admin));
    }

    /**
     * 添加新管理员
     * @param admin 待添加的管理员对象
     * @return 新增管理员信息的ApiResult对象
     */
    @PostMapping("/admin")
    public ApiResult add(Admin admin){
        return ApiResultHandler.success(adminService.add(admin));
    }

    /**
     * 重置管理员密码
     * @param adminId 管理员唯一标识符
     * @param newPsw 新密码（需加密处理）
     * @param oldPsw 旧密码（用于验证身份）
     * @return 密码重置操作结果的ApiResult对象
     */
    @GetMapping("/admin/resetPsw/{adminId}/{oldPsw}/{newPsw}")
    public ApiResult resetPsw(@PathVariable("adminId") Integer adminId,
                              @PathVariable("newPsw") String newPsw,
                              @PathVariable("oldPsw") String oldPsw) {
        return ApiResultHandler.success(adminService.resetPsw(adminId, newPsw, oldPsw));
    }
}